package com.csx.data.routing.sample.controller;

import com.csx.data.routing.sample.entity.MonthBillEntity;
import com.csx.data.routing.sample.service.IMonthBillsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Date;
import java.util.List;

@RestController
@RequestMapping("/bills")
public class MonthBillsAPI {

    @Autowired
    private IMonthBillsService billsService;
    
    // 账单结算的API
    @PostMapping("/settleUp")
    public String settleUp(@RequestBody MonthBillEntity monthBills){
        // 设置账单交易时间为当前时间
        monthBills.setBillDate(new Date(System.currentTimeMillis()));
        // 使用UUID随机生成一个流水号
        monthBills.setSerialNumber(monthBills.getMachineSerialNo() 
            + System.currentTimeMillis());
        // 调用新增账单数据的service方法
        if (billsService.insert(monthBills) > 0){
            return ">>>>账单结算成功<<<<";
        }
        return ">>>>账单结算失败<<<<";
    }

    // 根据流水号查询数据的API
    @GetMapping("/selectBySerialNumber")
    public String selectBySerialNumber(MonthBillEntity monthBills){
        // 调用Service层根据流水号查询数据的方法
        MonthBillEntity result = billsService.selectBySerialNumber(monthBills);
        if (result != null){
            return result.toString();
        }
        return ">>>>未查询到流水号对应的数据<<<<";
    }

    // 按照范围查询两个日期之间的所有账单数据
    @GetMapping("/rangeQueryByTime")
    public String rangeQueryByTime(@RequestParam("start") String start,
                                   @RequestParam("end")String end){
        // 调用Service层根据流水号查询数据的方法
        List<MonthBillEntity> bills = billsService.rangeQueryByDate(start, end);
        if (bills != null){
            return bills.toString();
        }
        return ">>>>指定的日期中没有账单数据<<<<";
    }

}
